package fr.lna.chess.util;

import java.util.HashMap;
import java.util.Locale;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;

import test.fr.lna.sandbox.Echiquier;

import fr.lna.chess.model.COULEUR_PIECE;
import fr.lna.chess.model.TYPE_PIECE;
import fr.lna.util.MessageTools;

/**
 * Classe pour les opérations sur les chaines FEN
 * L'idée est d'avoir un systeme mutli-langue
 * voir le site : http://www.iechecs.com/notation.htm
 * <p>
Lettres utilisées pour désigner les pièces en fonction de la langue
</p>
<table><tr>
<td>
<table class="t" style="width:80px">
<tr>  <td colspan="2" align="center">Français</td></tr>
<tr>	<td align="center">R</td><td >roi</td></tr>
<tr>	<td align="center">D</td><td >dame</td></tr>
<tr>	<td align="center">F</td><td >fou</td></tr>
<tr>	<td align="center">C</td><td >cavalier</td></tr>
<tr>	<td align="center">T</td><td >tour</td></tr>
<tr>	<td align="center">P</td><td style="width:50px">pion</td></tr>
</table>
</td>

<td style="padding-left:8px">
<table class="t" style="width:80px">
<tr>  <td colspan="2" align="center">Anglais</td></tr>
<tr>	<td align="center">K</td><td >king</td></tr>
<tr>	<td align="center">Q</td><td >queen</td></tr>
<tr>	<td align="center">B</td><td >bishop</td></tr>
<tr>	<td align="center">N</td><td >knight</td></tr>
<tr>	<td align="center">R</td><td >rook</td></tr>
<tr>	<td align="center">P</td><td >pawn</td></tr>
</table>
</td>

<td style="padding-left:8px">
<table class="t" style="width:80px">
<tr>  <td colspan="2" align="center">Italien</td></tr>
<tr>	<td align="center">R</td><td >re</td></tr>
<tr>	<td align="center">D</td><td >regina</td></tr>
<tr>	<td align="center">A</td><td >alfiere</td></tr>
<tr>	<td align="center">C</td><td >cavallo</td></tr>
<tr>	<td align="center">T</td><td >torre</td></tr>
<tr>	<td align="center">P</td><td style="width:50px">pedone</td></tr>
</table>
</td>

<td style="padding-left:8px">
<table class="t" style="width:80px">
<tr>  <td colspan="2" align="center">Espagnole</td></tr>
<tr>	<td align="center">R</td><td >rey</td></tr>
<tr>	<td align="center">D</td><td >dama</td></tr>
<tr>	<td align="center">A</td><td >alfil</td></tr>
<tr>	<td align="center">C</td><td >caballo</td></tr>
<tr>	<td align="center">T</td><td >torre</td></tr>
<tr>	<td align="center">P</td><td style="width:50px">peon</td></tr>
</table>
</td>

<td style="padding-left:8px">
<table class="t" style="width:80px">
<tr>  <td colspan="2" align="center">Allemand</td></tr>
<tr>	<td align="center">K</td><td >König</td></tr>
<tr>	<td align="center">D</td><td >Königin</td></tr>
<tr>	<td align="center">L</td><td >Läufer</td></tr>
<tr>	<td align="center">S</td><td >Springer</td></tr>
<tr>	<td align="center">T</td><td >Turm</td></tr>
<tr>	<td align="center">B</td><td style="width:50px">Bauer</td></tr>
</table>
</td>

<td style="padding-left:8px">
<table class="t" style="width:80px">
<tr>  <td colspan="2" align="center">Russe</td></tr>
<tr>	<td align="center">R</td><td>Korol'</td></tr>
<tr>	<td align="center">D</td><td>Ferz'</td></tr>
<tr>	<td align="center">F</td><td>Sion'</td></tr>
<tr>	<td align="center">C</td><td>Kon'</td></tr>
<tr>	<td align="center">T</td><td>Lad'ya</td></tr>
<tr>	<td align="center">P</td><td style="width:50px">Peshka</td></tr>
</table>
</td>

</tr></table>
 * 
 * @author Rouviere_x
 *
 */
@Component("fen.service")
public class FenService {

	@Autowired
	@Qualifier("message.source")
	private Message message;
	
	/**
	 * Récupération du code Fen en fonction du type de piece et de la couleur 
	 * @param t
	 * @return
	 */
	public String getFEN(TYPE_PIECE t, COULEUR_PIECE c) {
		String code = MessageTools.genCode(t, "fen");
		String base= message.getMessage(code);
		if (c == COULEUR_PIECE.BLANC) {
			return base.toUpperCase();
		} else {
			return base.toLowerCase();
		}
	}

	/**
	 * Construction de la position fen de l'échiquier.
	 * On commence par la ligne du haut ie la ligne 8
	 * Exemple de position en français ou en russe :) :
	 * Echiquier vide : 8/8/8/8/8/8/8/8
	 * Echiquier initial : tcfdrfct/pppppppp/8/8/8/8/PPPPPPPP/TCFDRFCT
	 * 
	 * @param chessBoard
	 */
	public String getPositionFEN(Echiquier chessBoard) {
		// TODO Auto-generated method stub
		return null;
		
	}


}
